package com.ccys.common.third.twilio;




/*import com.twilio.Twilio;
import com.twilio.jwt.accesstoken.ChatGrant;
import com.twilio.jwt.accesstoken.VideoGrant;
import com.twilio.jwt.accesstoken.VoiceGrant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;
//import com.twilio.jwt.accesstoken.AccessToken;
import com.twilio.jwt.accesstoken.VideoGrant;
//import com.twilio.rest.verify.v2.service.AccessToken;


import com.twilio.jwt.accesstoken.AccessToken;
import com.twilio.jwt.accesstoken.VoiceGrant;
import com.twilio.jwt.accesstoken.ChatGrant;
import com.twilio.jwt.accesstoken.VideoGrant;*/
import com.twilio.type.PhoneNumber;
import com.twilio.Twilio;
import com.twilio.jwt.accesstoken.AccessToken;
import com.twilio.jwt.accesstoken.VoiceGrant;
import com.twilio.jwt.accesstoken.ChatGrant;
import com.twilio.jwt.accesstoken.VideoGrant;


import com.twilio.rest.api.v2010.account.Message;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * twilio 通讯视频相关工具
 * @author Administrator
 * 参考地址 ：https://www.twilio.com/docs/voice/quickstart/java
 * https://www.twilio.com/docs/usage/api
 */
@Slf4j
@Component
public class TwilioVoiceCallUtil {


    /**
     * 5、集成twilio,开发app的member/GetTwilioToken接口以及对应业务处理(提取公共方法，医生端也许也会用到)@yuanhui
     * AccountSid = AC9a63db71d6ee26d1e55ec0276895cf61
     * ApiKey = SKe14cded1fe499829fa82c2471b36178f
     * ApiSecret = C3qb7WQFqSlywAinr2L6Bc2liPYJntUj
     *
     * 可以按照以下步骤在 Twilio 控制台中找到您的 AUTH_TOKEN：
     *
     * 登录到 Twilio 控制台：https://www.twilio.com/console
     * 在左侧导航栏中，选择 "Settings"（设置）。
     * 在 "General"（通用）选项卡下，您会看到 "API Credentials"（API 凭据）部分，其中包含您的 ACCOUNT SID 和 AUTH TOKEN。
     * 请注意，AUTH_TOKEN 是敏感信息，类似于密码，不应该公开或共享。确保妥善保存您的 AUTH_TOKEN，并避免将其硬编码在公开的代码中或向他人透露。
     *
     * 如果您担心 AUTH_TOKEN 的安全性，Twilio 还提供了一些安全最佳实践，如使用环境变量、密钥管理服务等来安全地存储和管理您的身份验证令牌。
     */

    // Twilio 账户身份认证信息
    private static final String ACCOUNT_SID = "AC9a63db71d6ee26d1e55ec0276895cf61";
    private static final String AUTH_TOKEN = "SKe14cded1fe499829fa82c2471b36178f";
    private static final String API_SECRET = "C3qb7WQFqSlywAinr2L6Bc2liPYJntUj";
    private static final String API_KEY = "SKe14cded1fe499829fa82c2471b36178f";
    // 发件人和收件人电话号码
    private static final String TWILIO_PHONE_NUMBER = "your_twilio_phone_number_here";
    private static final String DESTINATION_PHONE_NUMBER = "recipient_phone_number_here";

    public static void main(String[] args) {
        // Initialize the Twilio client
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

        // Send a message
        Message message = Message.creator(
            // 目标手机号
            new PhoneNumber("+8618408279830"),
            //Twilio 分配的手机号
            new PhoneNumber("+8618381744324"),
            "Hello from Twilio!")
            .create();

        System.out.println("Message SID: " + message.getSid());

        //getTwilioToken("");

        //getTwilioVideoToken("11","11");

    }

    //  AccessToken resource
    public static String  getTwilioToken(String rooom_id) {
        /*Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        AccessToken accessToken = AccessToken.creator(
            "VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            "identity",
            AccessToken.FactorTypes.PUSH)
            .create();

        System.out.println(accessToken.getSid());*/
        return null;

    }

    public static String  getTwilioVideoVoiceToken(String rooom_id) {
        // 初始化 Twilio
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

        // 创建访问令牌
        AccessToken accessToken = new AccessToken.Builder(
            ACCOUNT_SID,
            "your_api_key",
            "your_api_secret"
        ).build();

        /*// 添加语音权限
        VoiceGrant voiceGrant = new VoiceGrant.Builder().build();
        accessToken.addGrant(voiceGrant);

        // 添加聊天权限
        ChatGrant chatGrant = new ChatGrant.Builder().build();
        accessToken.addGrant(chatGrant);

        // 添加视频权限
        VideoGrant videoGrant = new VideoGrant.Builder().build();
        accessToken.addGrant(videoGrant);*/
        // 添加视频权限
        VideoGrant grant = new VideoGrant();


        // 生成令牌字符串
        String token = accessToken.toJwt();

        // 打印令牌字符串
        System.out.println("Twilio 视频令牌: " + token);
        return null;

    }



       /**
        * @description 获取访问视频token
        * @param userId 用户身份ID
        * @param rooomId 房间id
        * @date     2024/2/7
        * @author   cloud fly
        * 参考地址 https://www.twilio.com/docs/video/tutorials/user-identity-access-tokens#maincontent
        *
        */
    public static String  getTwilioVideoToken(String userId,String rooomId) {
//        String twilioAccountSid = System.getenv("TWILIO_ACCOUNT_SID");
//        String twilioApiKey = System.getenv("TWILIO_API_KEY");
//        String twilioApiSecret = System.getenv("TWILIO_API_SECRET");
        String twilioAccountSid = ACCOUNT_SID;
        String twilioApiKey = API_KEY;
        String twilioApiSecret = API_SECRET;

        // Required for Video
        String identity = userId;
        // Create Video grant
        VideoGrant grant = new VideoGrant().setRoom(rooomId);
        // Create access token
        AccessToken token = new AccessToken.Builder(
            twilioAccountSid,
            twilioApiKey,
            twilioApiSecret
        ).identity(identity).grant(grant).build();
        String jwtTokenStr = token.toJwt();
        System.out.println(jwtTokenStr);
        return jwtTokenStr;

    }


}
